USE [Bases2]
GO
/****** Object:  StoredProcedure [dbo].[InsertarChequeFolio]    Script Date: 12/01/2011 14:05:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[InsertarChequeFolio]    
	@id_folio int,
	@id_cuenta int,
	@id_cheque int,
	@monto decimal(18,2)	
AS 
BEGIN
	SET NOCOUNT ON
	BEGIN TRANSACTION 	
	
	DECLARE @estado varchar(200)
	DECLARE @contador int
	SET @estado = NULL 			
	
	SELECT @contador=COUNT(1)
	FROM CUENTA
	WHERE id_cuenta=@id_cuenta 	
	
	IF @contador<=0
	BEGIN
		SET @estado = 'Rechazado porque la cuenta no existe.';
		
		/**********BITACORA*************/
		SET @contador=0
		SELECT TOP(1) @contador=BITACORA.id_bitacora
		FROM BITACORA
		ORDER BY BITACORA.id_bitacora DESC						
		IF @contador IS NULL
		BEGIN
			SET @contador=-1
		END
			
		SET @contador=@contador+1
		INSERT INTO BITACORA VALUES(@contador,GETDATE(),5,@id_cuenta,0,@monto,0,'Rechazado debido a que la cuenta ingresada no existe.')
		/**********BITACORA*************/
	END
	ELSE
	BEGIN		
		SELECT @Contador=COUNT(1)
		FROM CHEQUE
		INNER JOIN CHEQUERA ON CHEQUE.id_chequera=CHEQUERA.id_chequera
		INNER JOIN CUENTA ON CUENTA.id_cuenta=CHEQUERA.id_cuenta
		WHERE CUENTA.id_cuenta=@id_cuenta
		AND CHEQUE.id_cheque=@id_cheque
			
		IF @Contador<=0
		BEGIN
			SET @estado = 'Rechazado porque no existe asignado un cheque numero ['+CAST(@id_cheque as varchar)+'] que pertenezca a la cuenta ['+CAST(@id_cuenta as varchar)+'].'
			
			/**********BITACORA*************/
			DECLARE @Diferencia1 decimal (18,2), @DepositosCompensados  decimal (18,2), @Debitos  decimal (18,2)
			SELECT @DepositosCompensados=SUM(monto)
			FROM DEPOSITO
			INNER JOIN CUENTA ON CUENTA.id_cuenta=DEPOSITO.id_cuenta
			WHERE CUENTA.id_cuenta=@id_cuenta
			AND DEPOSITO.compensado=1												
			
			SELECT @Debitos=SUM(monto)
			FROM DEBITO
			INNER JOIN CUENTA ON CUENTA.id_cuenta=DEBITO.id_cuenta
			WHERE CUENTA.id_cuenta=@id_cuenta
					
			SET @Diferencia1= ISNULL(@DepositosCompensados,0)-ISNULL(@Debitos,0)
						
			SET @contador=0			
			SELECT TOP(1) @contador=BITACORA.id_bitacora
			FROM BITACORA
			ORDER BY BITACORA.id_bitacora DESC						
			IF @contador IS NULL
			BEGIN
				SET @contador=-1
			END
				
			SET @contador=@contador+1
			INSERT INTO BITACORA VALUES(@contador,GETDATE(),5,@id_cuenta,@Diferencia1,@monto,@Diferencia1,'Rechazado debido a que no existe un cheque ['+CAST(@id_cheque as varchar)+'] que pertenezca a esta cuenta.')
			/**********BITACORA*************/
		END		
	END
	
	INSERT INTO FOLIO_CHEQUE VALUES(@id_cheque,@id_cuenta,@monto,@id_folio,@estado)	
				
	COMMIT
	SET NOCOUNT OFF
END
